package xuan.core.ziwei.maps;

import java.util.*;

/**
 * 紫微斗数 - 基础常量
 *
 * @author 善待
 */
public class ZiWeiJiChuMap {

    /**
     * 月将、月将神（上一气+下一气为键）
     */
    public static final Map<String, List<String>> YUE_JIANG = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        {
            put("大寒雨水", Arrays.asList("子", "神后")); // 大寒至雨水：月将为子，月将神为神后
            put("冬至大寒", Arrays.asList("丑", "大吉"));
            put("小雪冬至", Arrays.asList("寅", "功曹"));
            put("霜降小雪", Arrays.asList("卯", "太冲"));
            put("秋分霜降", Arrays.asList("辰", "天罡"));
            put("处暑秋分", Arrays.asList("巳", "太乙"));
            put("大暑处暑", Arrays.asList("午", "胜光"));
            put("夏至大暑", Arrays.asList("未", "小吉"));
            put("小满夏至", Arrays.asList("申", "传送"));
            put("谷雨小满", Arrays.asList("酉", "从魁"));
            put("春分谷雨", Arrays.asList("戌", "河魁"));
            put("雨水春分", Arrays.asList("亥", "登明"));
        }
    };

    /**
     * 五不遇时（日干为键）
     */
    public static final Map<String, String> WU_BU_YU_SHI = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("甲", "庚午"); // 甲日庚午时
            put("乙", "辛巳");
            put("丙", "壬辰");
            put("丁", "癸卯");
            put("戊", "甲寅");
            put("己", "乙丑");
            put("庚", "丙子");
            put("辛", "丁酉");
            put("壬", "戊申");
            put("癸", "己未");
        }
    };

    /**
     * 天干阴阳（天干为键）
     */
    public static final Map<String, String> TIAN_GAN_YIN_YANG = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("甲", "阳");
            put("乙", "阴");
            put("丙", "阳");
            put("丁", "阴");
            put("戊", "阳");
            put("己", "阴");
            put("庚", "阳");
            put("辛", "阴");
            put("壬", "阳");
            put("癸", "阴");
        }
    };

    /**
     * 天干五行（天干为键）
     */
    public static final Map<String, String> TIAN_GAN_WU_XING = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("甲", "木");
            put("乙", "木");
            put("丙", "火");
            put("丁", "火");
            put("戊", "土");
            put("己", "土");
            put("庚", "金");
            put("辛", "金");
            put("壬", "水");
            put("癸", "水");
        }
    };

    /**
     * 地支五行（地支为键）
     */
    public static final Map<String, String> DI_ZHI_WU_XING = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("子", "水");
            put("丑", "土");
            put("寅", "木");
            put("卯", "木");
            put("辰", "土");
            put("巳", "火");
            put("午", "火");
            put("未", "土");
            put("申", "金");
            put("酉", "金");
            put("戌", "土");
            put("亥", "水");
        }
    };

    /**
     * 纳音（干支为键）
     */
    public static final Map<String, String> NA_YIN = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("甲子", "海中金");
            put("丙寅", "炉中火");
            put("戊辰", "大林木");
            put("庚午", "路旁土");
            put("壬申", "剑锋金");
            put("甲戌", "山头火");
            put("丙子", "涧下水");
            put("戊寅", "城头土");
            put("庚辰", "白蜡金");
            put("壬午", "杨柳木");
            put("甲申", "泉中水");
            put("丙戌", "屋上土");
            put("戊子", "霹雳火");
            put("庚寅", "松柏木");
            put("壬辰", "长流水");
            put("甲午", "沙中金");
            put("丙申", "山下火");
            put("戊戌", "平地木");
            put("庚子", "壁上土");
            put("壬寅", "金箔金");
            put("甲辰", "覆灯火");
            put("丙午", "天河水");
            put("戊申", "大驿土");
            put("庚戌", "钗钏金");
            put("壬子", "桑柘木");
            put("甲寅", "大溪水");
            put("丙辰", "沙中土");
            put("戊午", "天上火");
            put("庚申", "石榴木");
            put("壬戌", "大海水");
            put("乙丑", "海中金");
            put("丁卯", "炉中火");
            put("己巳", "大林木");
            put("辛未", "路旁土");
            put("癸酉", "剑锋金");
            put("乙亥", "山头火");
            put("丁丑", "涧下水");
            put("己卯", "城头土");
            put("辛巳", "白蜡金");
            put("癸未", "杨柳木");
            put("乙酉", "泉中水");
            put("丁亥", "屋上土");
            put("己丑", "霹雳火");
            put("辛卯", "松柏木");
            put("癸巳", "长流水");
            put("乙未", "沙中金");
            put("丁酉", "山下火");
            put("己亥", "平地木");
            put("辛丑", "壁上土");
            put("癸卯", "金箔金");
            put("乙巳", "覆灯火");
            put("丁未", "天河水");
            put("己酉", "大驿土");
            put("辛亥", "钗钏金");
            put("癸丑", "桑柘木");
            put("乙卯", "大溪水");
            put("丁巳", "沙中土");
            put("己未", "天上火");
            put("辛酉", "石榴木");
            put("癸亥", "大海水");
        }
    };

    /**
     * 空亡（干支为键）
     */
    public static final Map<String, String> KONG_WANG = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("甲子", "戌亥");
            put("乙丑", "戌亥");
            put("丙寅", "戌亥");
            put("丁卯", "戌亥");
            put("戊辰", "戌亥");
            put("己巳", "戌亥");
            put("庚午", "戌亥");
            put("辛未", "戌亥");
            put("壬申", "戌亥");
            put("癸酉", "戌亥");
            put("甲戌", "申酉");
            put("乙亥", "申酉");
            put("丙子", "申酉");
            put("丁丑", "申酉");
            put("戊寅", "申酉");
            put("己卯", "申酉");
            put("庚辰", "申酉");
            put("辛巳", "申酉");
            put("壬午", "申酉");
            put("癸未", "申酉");
            put("甲申", "午未");
            put("乙酉", "午未");
            put("丙戌", "午未");
            put("丁亥", "午未");
            put("戊子", "午未");
            put("己丑", "午未");
            put("庚寅", "午未");
            put("辛卯", "午未");
            put("壬辰", "午未");
            put("癸巳", "午未");
            put("甲午", "辰巳");
            put("乙未", "辰巳");
            put("丙申", "辰巳");
            put("丁酉", "辰巳");
            put("戊戌", "辰巳");
            put("己亥", "辰巳");
            put("庚子", "辰巳");
            put("辛丑", "辰巳");
            put("壬寅", "辰巳");
            put("癸卯", "辰巳");
            put("甲辰", "寅卯");
            put("乙巳", "寅卯");
            put("丙午", "寅卯");
            put("丁未", "寅卯");
            put("戊申", "寅卯");
            put("己酉", "寅卯");
            put("庚戌", "寅卯");
            put("辛亥", "寅卯");
            put("壬子", "寅卯");
            put("癸丑", "寅卯");
            put("甲寅", "子丑");
            put("乙卯", "子丑");
            put("丙辰", "子丑");
            put("丁巳", "子丑");
            put("戊午", "子丑");
            put("己未", "子丑");
            put("庚申", "子丑");
            put("辛酉", "子丑");
            put("壬戌", "子丑");
            put("癸亥", "子丑");
        }
    };

    /**
     * 十二地支
     */
    public static final String[] DI_ZHI = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};

    /**
     * 十二宫（命宫除外的十一宫）
     */
    public static final String[] SHI_ER_GONG = {"兄弟", "夫妻", "子女", "财帛", "疾厄", "迁移", "交友", "官禄", "田宅", "福德", "父母"};

    /**
     * 十二宫地支（左下角为第一宫，依次顺时针旋转）
     */
    public static final List<String> SHI_ER_GONG_DI_ZHI = Arrays.asList("寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", "子", "丑");

    /**
     * 十二宫地支对应宫位（地支为键）
     */
    public static final Map<String, Integer> SHI_ER_GONG_DI_ZHI_GONG_WEI = new HashMap<String, Integer>() {
        private static final long serialVersionUID = -1;

        {
            put("寅", 1);  // 寅1宫
            put("卯", 2);  // 卯2宫
            put("辰", 3);  // 辰3宫
            put("巳", 4);  // 巳4宫
            put("午", 5);  // 午5宫
            put("未", 6);  // 未6宫
            put("申", 7);  // 申7宫
            put("酉", 8);  // 酉8宫
            put("戌", 9);  // 戌9宫
            put("亥", 10); // 亥10宫
            put("子", 11); // 子11宫
            put("丑", 12); // 丑12宫
        }
    };

    /**
     * 宫位对应十二宫地支（宫位为键）
     */
    public static final Map<Integer, String> GONG_WEI_SHI_ER_GONG_DI_ZHI = new HashMap<Integer, String>() {
        private static final long serialVersionUID = -1;

        {
            put(1, "寅");  // 寅1宫
            put(2, "卯");  // 卯2宫
            put(3, "辰");  // 辰3宫
            put(4, "巳");  // 巳4宫
            put(5, "午");  // 午5宫
            put(6, "未");  // 未6宫
            put(7, "申");  // 申7宫
            put(8, "酉");  // 酉8宫
            put(9, "戌");  // 戌9宫
            put(10, "亥"); // 亥10宫
            put(11, "子"); // 子11宫
            put(12, "丑"); // 丑12宫
        }
    };

    /**
     * 十二宫天干（年干+十二宫地支为键）
     */
    public static final Map<String, String> SHI_ER_GONG_TIAN_GAN = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("甲子", "丙");
            put("甲丑", "丁");
            put("甲寅", "丙");
            put("甲卯", "丁");
            put("甲辰", "戊");
            put("甲巳", "己");
            put("甲午", "庚");
            put("甲未", "辛");
            put("甲申", "壬");
            put("甲酉", "癸");
            put("甲戌", "甲");
            put("甲亥", "乙");

            put("乙子", "戊");
            put("乙丑", "己");
            put("乙寅", "戊");
            put("乙卯", "己");
            put("乙辰", "庚");
            put("乙巳", "辛");
            put("乙午", "壬");
            put("乙未", "癸");
            put("乙申", "甲");
            put("乙酉", "乙");
            put("乙戌", "丙");
            put("乙亥", "丁");

            put("丙子", "庚");
            put("丙丑", "辛");
            put("丙寅", "庚");
            put("丙卯", "辛");
            put("丙辰", "壬");
            put("丙巳", "癸");
            put("丙午", "甲");
            put("丙未", "乙");
            put("丙申", "丙");
            put("丙酉", "丁");
            put("丙戌", "戊");
            put("丙亥", "己");

            put("丁子", "壬");
            put("丁丑", "癸");
            put("丁寅", "壬");
            put("丁卯", "癸");
            put("丁辰", "甲");
            put("丁巳", "乙");
            put("丁午", "丙");
            put("丁未", "丁");
            put("丁申", "戊");
            put("丁酉", "己");
            put("丁戌", "庚");
            put("丁亥", "辛");

            put("戊子", "甲");
            put("戊丑", "乙");
            put("戊寅", "甲");
            put("戊卯", "乙");
            put("戊辰", "丙");
            put("戊巳", "丁");
            put("戊午", "戊");
            put("戊未", "己");
            put("戊申", "庚");
            put("戊酉", "辛");
            put("戊戌", "壬");
            put("戊亥", "癸");

            put("己子", "丙");
            put("己丑", "丁");
            put("己寅", "丙");
            put("己卯", "丁");
            put("己辰", "戊");
            put("己巳", "己");
            put("己午", "庚");
            put("己未", "辛");
            put("己申", "壬");
            put("己酉", "癸");
            put("己戌", "甲");
            put("己亥", "乙");

            put("庚子", "戊");
            put("庚丑", "己");
            put("庚寅", "戊");
            put("庚卯", "己");
            put("庚辰", "庚");
            put("庚巳", "辛");
            put("庚午", "壬");
            put("庚未", "癸");
            put("庚申", "甲");
            put("庚酉", "乙");
            put("庚戌", "丙");
            put("庚亥", "丁");

            put("辛子", "庚");
            put("辛丑", "辛");
            put("辛寅", "庚");
            put("辛卯", "辛");
            put("辛辰", "壬");
            put("辛巳", "癸");
            put("辛午", "甲");
            put("辛未", "乙");
            put("辛申", "丙");
            put("辛酉", "丁");
            put("辛戌", "戊");
            put("辛亥", "己");

            put("壬子", "壬");
            put("壬丑", "癸");
            put("壬寅", "壬");
            put("壬卯", "癸");
            put("壬辰", "甲");
            put("壬巳", "乙");
            put("壬午", "丙");
            put("壬未", "丁");
            put("壬申", "戊");
            put("壬酉", "己");
            put("壬戌", "庚");
            put("壬亥", "辛");

            put("癸子", "甲");
            put("癸丑", "乙");
            put("癸寅", "甲");
            put("癸卯", "乙");
            put("癸辰", "丙");
            put("癸巳", "丁");
            put("癸午", "戊");
            put("癸未", "己");
            put("癸申", "庚");
            put("癸酉", "辛");
            put("癸戌", "壬");
            put("癸亥", "癸");
        }
    };

    /**
     * 五行局（年干+命宫地支为键）
     */
    public static final Map<String, String> WU_XING_JU_1 = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        /*
            五行局分为：水二局、木三局、金四局、土五局、火六局。
         */

        {
            put("甲子", "水二局");
            put("甲丑", "水二局");
            put("甲寅", "火六局");
            put("甲卯", "火六局");
            put("甲辰", "木三局");
            put("甲巳", "木三局");
            put("甲午", "土五局");
            put("甲未", "土五局");
            put("甲申", "金四局");
            put("甲酉", "金四局");
            put("甲戌", "火六局");
            put("甲亥", "火六局");
            put("乙子", "火六局");
            put("乙丑", "火六局");
            put("乙寅", "土五局");
            put("乙卯", "土五局");
            put("乙辰", "金四局");
            put("乙巳", "金四局");
            put("乙午", "木三局");
            put("乙未", "木三局");
            put("乙申", "水二局");
            put("乙酉", "水二局");
            put("乙戌", "土五局");
            put("乙亥", "土五局");
            put("丙子", "土五局");
            put("丙丑", "土五局");
            put("丙寅", "木三局");
            put("丙卯", "木三局");
            put("丙辰", "水二局");
            put("丙巳", "水二局");
            put("丙午", "金四局");
            put("丙未", "金四局");
            put("丙申", "火六局");
            put("丙酉", "火六局");
            put("丙戌", "木三局");
            put("丙亥", "木三局");
            put("丁子", "木三局");
            put("丁丑", "木三局");
            put("丁寅", "金四局");
            put("丁卯", "金四局");
            put("丁辰", "火六局");
            put("丁巳", "火六局");
            put("丁午", "水二局");
            put("丁未", "水二局");
            put("丁申", "土五局");
            put("丁酉", "土五局");
            put("丁戌", "金四局");
            put("丁亥", "金四局");
            put("戊子", "金四局");
            put("戊丑", "金四局");
            put("戊寅", "水二局");
            put("戊卯", "水二局");
            put("戊辰", "土五局");
            put("戊巳", "土五局");
            put("戊午", "火六局");
            put("戊未", "火六局");
            put("戊申", "木三局");
            put("戊酉", "木三局");
            put("戊戌", "水二局");
            put("戊亥", "水二局");
            put("己子", "水二局");
            put("己丑", "水二局");
            put("己寅", "火六局");
            put("己卯", "火六局");
            put("己辰", "木三局");
            put("己巳", "木三局");
            put("己午", "土五局");
            put("己未", "土五局");
            put("己申", "金四局");
            put("己酉", "金四局");
            put("己戌", "火六局");
            put("己亥", "火六局");
            put("庚子", "火六局");
            put("庚丑", "火六局");
            put("庚寅", "土五局");
            put("庚卯", "土五局");
            put("庚辰", "金四局");
            put("庚巳", "金四局");
            put("庚午", "木三局");
            put("庚未", "木三局");
            put("庚申", "水二局");
            put("庚酉", "水二局");
            put("庚戌", "土五局");
            put("庚亥", "土五局");
            put("辛子", "土五局");
            put("辛丑", "土五局");
            put("辛寅", "木三局");
            put("辛卯", "木三局");
            put("辛辰", "水二局");
            put("辛巳", "水二局");
            put("辛午", "金四局");
            put("辛未", "金四局");
            put("辛申", "火六局");
            put("辛酉", "火六局");
            put("辛戌", "木三局");
            put("辛亥", "木三局");
            put("壬子", "木三局");
            put("壬丑", "木三局");
            put("壬寅", "金四局");
            put("壬卯", "金四局");
            put("壬辰", "火六局");
            put("壬巳", "火六局");
            put("壬午", "水二局");
            put("壬未", "水二局");
            put("壬申", "土五局");
            put("壬酉", "土五局");
            put("壬戌", "金四局");
            put("壬亥", "金四局");
            put("癸子", "金四局");
            put("癸丑", "金四局");
            put("癸寅", "水二局");
            put("癸卯", "水二局");
            put("癸辰", "土五局");
            put("癸巳", "土五局");
            put("癸午", "火六局");
            put("癸未", "火六局");
            put("癸申", "木三局");
            put("癸酉", "木三局");
            put("癸戌", "水二局");
            put("癸亥", "水二局");
        }
    };

    /**
     * 五行局（命宫天干+命宫地支为键）
     */
    public static final Map<String, String> WU_XING_JU_2 = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        /*
            五行局分为：水二局、木三局、金四局、土五局、火六局。
         */

        {
            put("甲子", "金四局");
            put("乙丑", "金四局");
            put("丙寅", "火六局");
            put("丁卯", "火六局");
            put("戊辰", "大林木");
            put("己巳", "大林木");
            put("庚午", "土五局");
            put("辛未", "土五局");
            put("甲戌", "火六局");
            put("乙亥", "火六局");
            put("丙子", "水二局");
            put("丁丑", "水二局");
            put("戊寅", "土五局");
            put("己卯", "土五局");
            put("庚辰", "金四局");
            put("辛巳", "金四局");
            put("甲申", "水二局");
            put("乙酉", "水二局");
            put("丙戌", "土五局");
            put("丁亥", "土五局");
            put("戊子", "火六局");
            put("己丑", "火六局");
            put("庚寅", "木三局");
            put("辛卯", "木三局");
            put("甲午", "金四局");
            put("乙未", "金四局");
            put("丙申", "火六局");
            put("丁酉", "火六局");
            put("戊戌", "木三局");
            put("己亥", "木三局");
            put("庚子", "土五局");
            put("辛丑", "土五局");
            put("甲辰", "火六局");
            put("乙巳", "火六局");
            put("丙午", "水二局");
            put("丁未", "水二局");
            put("戊申", "土五局");
            put("己酉", "土五局");
            put("庚戌", "金四局");
            put("辛亥", "金四局");
            put("甲寅", "水二局");
            put("乙卯", "水二局");
            put("丙辰", "土五局");
            put("丁巳", "土五局");
            put("戊午", "火六局");
            put("己未", "火六局");
            put("庚申", "木三局");
            put("辛酉", "木三局");
            put("壬申", "金四局");
            put("癸酉", "金四局");
            put("壬午", "木三局");
            put("癸未", "木三局");
            put("壬辰", "水二局");
            put("癸己", "水二局");
            put("壬寅", "金四局");
            put("癸卯", "金四局");
            put("壬子", "木三局");
            put("癸丑", "木三局");
            put("壬戌", "水二局");
            put("癸亥", "水二局");
        }
    };

    /**
     * 紫微星宫位（农历日+五行局为键）
     */
    public static final Map<String, String> ZI_WEI_XING_GONG_WEI = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        /* 统一按左下角寅宫为第一宫起算，依次顺时针旋转 */

        {
            put("1水二局", "丑"); // 例如：农历日为1、五行局为水二局，则紫微星落丑12宫
            put("2水二局", "寅"); // 例如：农历日为2、五行局为水二局，则紫微星落寅1宫
            put("3水二局", "寅"); // ...
            put("4水二局", "卯");
            put("5水二局", "卯");
            put("6水二局", "辰");
            put("7水二局", "辰");
            put("8水二局", "巳");
            put("9水二局", "巳");
            put("10水二局", "午");
            put("11水二局", "午");
            put("12水二局", "未");
            put("13水二局", "未");
            put("14水二局", "申");
            put("15水二局", "申");
            put("16水二局", "酉");
            put("17水二局", "酉");
            put("18水二局", "戌");
            put("19水二局", "戌");
            put("20水二局", "亥");
            put("21水二局", "亥");
            put("22水二局", "子");
            put("23水二局", "子");
            put("24水二局", "丑");
            put("25水二局", "丑");
            put("26水二局", "寅");
            put("27水二局", "寅");
            put("28水二局", "卯");
            put("29水二局", "卯");
            put("30水二局", "辰");

            put("1木三局", "辰");
            put("2木三局", "丑");
            put("3木三局", "寅");
            put("4木三局", "巳");
            put("5木三局", "寅");
            put("6木三局", "卯");
            put("7木三局", "午");
            put("8木三局", "卯");
            put("9木三局", "辰");
            put("10木三局", "未");
            put("11木三局", "辰");
            put("12木三局", "巳");
            put("13木三局", "申");
            put("14木三局", "巳");
            put("15木三局", "午");
            put("16木三局", "酉");
            put("17木三局", "午");
            put("18木三局", "未");
            put("19木三局", "戌");
            put("20木三局", "未");
            put("21木三局", "申");
            put("22木三局", "亥");
            put("23木三局", "申");
            put("24木三局", "酉");
            put("25木三局", "子");
            put("26木三局", "酉");
            put("27木三局", "戌");
            put("28木三局", "丑");
            put("29木三局", "戌");
            put("30木三局", "亥");

            put("1金四局", "亥");
            put("2金四局", "辰");
            put("3金四局", "丑");
            put("4金四局", "寅");
            put("5金四局", "子");
            put("6金四局", "巳");
            put("7金四局", "寅");
            put("8金四局", "卯");
            put("9金四局", "丑");
            put("10金四局", "午");
            put("11金四局", "卯");
            put("12金四局", "辰");
            put("13金四局", "寅");
            put("14金四局", "未");
            put("15金四局", "辰");
            put("16金四局", "巳");
            put("17金四局", "卯");
            put("18金四局", "申");
            put("19金四局", "巳");
            put("20金四局", "午");
            put("21金四局", "辰");
            put("22金四局", "酉");
            put("23金四局", "午");
            put("24金四局", "未");
            put("25金四局", "巳");
            put("26金四局", "戌");
            put("27金四局", "未");
            put("28金四局", "申");
            put("29金四局", "午");
            put("30金四局", "亥");

            put("1土五局", "午");
            put("2土五局", "亥");
            put("3土五局", "辰");
            put("4土五局", "丑");
            put("5土五局", "寅");
            put("6土五局", "未");
            put("7土五局", "子");
            put("8土五局", "巳");
            put("9土五局", "寅");
            put("10土五局", "卯");
            put("11土五局", "申");
            put("12土五局", "丑");
            put("13土五局", "午");
            put("14土五局", "未");
            put("15土五局", "辰");
            put("16土五局", "酉");
            put("17土五局", "寅");
            put("18土五局", "未");
            put("19土五局", "辰");
            put("20土五局", "巳");
            put("21土五局", "戌");
            put("22土五局", "卯");
            put("23土五局", "申");
            put("24土五局", "巳");
            put("25土五局", "午");
            put("26土五局", "亥");
            put("27土五局", "辰");
            put("28土五局", "酉");
            put("29土五局", "午");
            put("30土五局", "未");

            put("1火六局", "酉");
            put("2火六局", "午");
            put("3火六局", "亥");
            put("4火六局", "辰");
            put("5火六局", "丑");
            put("6火六局", "寅");
            put("7火六局", "戌");
            put("8火六局", "未");
            put("9火六局", "子");
            put("10火六局", "巳");
            put("11火六局", "寅");
            put("12火六局", "卯");
            put("13火六局", "亥");
            put("14火六局", "申");
            put("15火六局", "丑");
            put("16火六局", "午");
            put("17火六局", "卯");
            put("18火六局", "辰");
            put("19火六局", "子");
            put("20火六局", "酉");
            put("21火六局", "寅");
            put("22火六局", "未");
            put("23火六局", "辰");
            put("24火六局", "巳");
            put("25火六局", "丑");
            put("26火六局", "戌");
            put("27火六局", "卯");
            put("28火六局", "申");
            put("29火六局", "巳");
            put("30火六局", "午");
        }
    };

    /**
     * 紫微星系诸星（紫微星落宫地支为键）
     */
    public static final Map<String, List<String>> ZI_WEI_XING_XING_XI_ZHU_XING = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        /*
            紫微星系诸星：紫微星、天机星、太阳星、武曲星、天同星、廉贞星
        */ {
            // 例如：紫微星落寅1宫，其余五星为：天机星落丑12宫、太阳星落亥10宫、武曲星落戌9宫、天同星落酉8宫、廉贞星落午5宫
            put("寅", Arrays.asList("紫微", "", "", "", "廉贞", "", "", "天同", "武曲", "太阳", "", "天机"));
            put("卯", Arrays.asList("天机", "紫微", "", "", "", "廉贞", "", "", "天同", "武曲", "太阳", ""));
            put("辰", Arrays.asList("", "天机", "紫微", "", "", "", "廉贞", "", "", "天同", "武曲", "太阳"));
            put("巳", Arrays.asList("太阳", "", "天机", "紫微", "", "", "", "廉贞", "", "", "天同", "武曲"));
            put("午", Arrays.asList("武曲", "太阳", "", "天机", "紫微", "", "", "", "廉贞", "", "", "天同"));
            put("未", Arrays.asList("天同", "武曲", "太阳", "", "天机", "紫微", "", "", "", "廉贞", "", ""));
            put("申", Arrays.asList("", "天同", "武曲", "太阳", "", "天机", "紫微", "", "", "", "廉贞", ""));
            put("酉", Arrays.asList("", "", "天同", "武曲", "太阳", "", "天机", "紫微", "", "", "", "廉贞"));
            put("戌", Arrays.asList("廉贞", "", "", "天同", "武曲", "太阳", "", "天机", "紫微", "", "", ""));
            put("亥", Arrays.asList("", "廉贞", "", "", "天同", "武曲", "太阳", "", "天机", "紫微", "", ""));
            put("子", Arrays.asList("", "", "廉贞", "", "", "天同", "武曲", "太阳", "", "天机", "紫微", ""));
            put("丑", Arrays.asList("", "", "", "廉贞", "", "", "天同", "武曲", "太阳", "", "天机", "紫微"));
        }
    };

    /**
     * 天府星相对于紫微星的宫位地支（紫微星宫位地支为键）
     */
    public static final Map<String, String> TIAN_FU_ZI_WEI = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        /*
            紫微星落寅宫，则天府星落寅宫。
            紫微星落卯宫，则天府星落丑宫。
            紫微星落辰宫，则天府星落子宫。
            紫微星落巳宫，则天府星落亥宫。
            紫微星落午宫，则天府星落戌宫。
            紫微星落未宫，则天府星落酉宫。
            紫微星落申宫，则天府星落申宫。
            紫微星落酉宫，则天府星落未宫。
            紫微星落戌宫，则天府星落午宫。
            紫微星落亥宫，则天府星落巳宫。
            紫微星落子宫，则天府星落辰宫。
            紫微星落丑宫，则天府星落卯宫。

         */

        {
            put("寅", "寅"); // 紫微星落寅宫，则天府星落寅宫。
            put("卯", "丑"); // 紫微星落卯宫，则天府星落丑宫。
            put("辰", "子"); // 紫微星落辰宫，则天府星落子宫。
            put("巳", "亥"); // 紫微星落巳宫，则天府星落亥宫。
            put("午", "戌"); // 紫微星落午宫，则天府星落戌宫。
            put("未", "酉"); // 紫微星落未宫，则天府星落酉宫。
            put("申", "申"); // 紫微星落申宫，则天府星落申宫。
            put("酉", "未"); // 紫微星落酉宫，则天府星落未宫。
            put("戌", "午"); // 紫微星落戌宫，则天府星落午宫。
            put("亥", "巳"); // 紫微星落亥宫，则天府星落巳宫。
            put("子", "辰"); // 紫微星落子宫，则天府星落辰宫。
            put("丑", "卯"); // 紫微星落丑宫，则天府星落卯宫。
        }
    };

    /**
     * 天府星系诸星（天府星落宫地支为键）
     */
    public static final Map<String, List<String>> TIAN_FU_XING_XING_XI_ZHU_XING = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        /*
            天府星系诸星：天府星、太阴星、贪狼星、巨门星、天相星、天梁星、七杀星、破军星
        */

        {
            // 例如：天府星落寅1宫，其余七星为：太阴星落卯2宫、贪狼星落辰3宫、巨门星落巳4宫、天相星落午5宫、天梁星落未6宫、七杀星落申7宫、破军星落子11宫
            put("寅", Arrays.asList("天府", "太阴", "贪狼", "巨门", "天相", "天梁", "七杀", "", "", "", "破军", ""));
            put("卯", Arrays.asList("", "天府", "太阴", "贪狼", "巨门", "天相", "天梁", "七杀", "", "", "", "破军"));
            put("辰", Arrays.asList("破军", "", "天府", "太阴", "贪狼", "巨门", "天相", "天梁", "七杀", "", "", ""));
            put("巳", Arrays.asList("", "破军", "", "天府", "太阴", "贪狼", "巨门", "天相", "天梁", "七杀", "", ""));
            put("午", Arrays.asList("", "", "破军", "", "天府", "太阴", "贪狼", "巨门", "天相", "天梁", "七杀", ""));
            put("未", Arrays.asList("", "", "", "破军", "", "天府", "太阴", "贪狼", "巨门", "天相", "天梁", "七杀"));
            put("申", Arrays.asList("七杀", "", "", "", "破军", "", "天府", "太阴", "贪狼", "巨门", "天相", "天梁"));
            put("酉", Arrays.asList("天梁", "七杀", "", "", "", "破军", "", "天府", "太阴", "贪狼", "巨门", "天相"));
            put("戌", Arrays.asList("天相", "天梁", "七杀", "", "", "", "破军", "", "天府", "太阴", "贪狼", "巨门"));
            put("亥", Arrays.asList("巨门", "天相", "天梁", "七杀", "", "", "", "破军", "", "天府", "太阴", "贪狼"));
            put("子", Arrays.asList("贪狼", "巨门", "天相", "天梁", "七杀", "", "", "", "破军", "", "天府", "太阴"));
            put("丑", Arrays.asList("太阴", "贪狼", "巨门", "天相", "天梁", "七杀", "", "", "", "破军", "", "天府"));
        }
    };

    /**
     * 时支诸星（时支+年支为键）
     */
    public static final Map<String, List<String>> SHI_ZHI_ZHU_XING = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        /*
            时支诸星：文昌星、文曲星、火星、铃星、地劫星、地空星、台辅星、封诰星
        */

        {
            put("寅寅", Arrays.asList("", "火星", "封诰", "铃星", "文曲", "", "文昌_台辅", "地空", "", "", "", "地劫"));
            put("寅午", Arrays.asList("", "火星", "封诰", "铃星", "文曲", "", "文昌_台辅", "地空", "", "", "", "地劫"));
            put("寅戌", Arrays.asList("", "火星", "封诰", "铃星", "文曲", "", "文昌_台辅", "地空", "", "", "", "地劫"));
            put("寅申", Arrays.asList("", "", "封诰_火星", "", "文曲", "", "文昌_台辅", "地空", "", "", "铃星", "地劫"));
            put("寅子", Arrays.asList("", "", "封诰_火星", "", "文曲", "", "文昌_台辅", "地空", "", "", "铃星", "地劫"));
            put("寅辰", Arrays.asList("", "", "封诰_火星", "", "文曲", "", "文昌_台辅", "地空", "", "", "铃星", "地劫"));
            put("寅巳", Arrays.asList("", "", "封诰", "火星", "文曲", "", "文昌_台辅", "地空", "", "", "铃星", "地劫"));
            put("寅酉", Arrays.asList("", "", "封诰", "火星", "文曲", "", "文昌_台辅", "地空", "", "", "铃星", "地劫"));
            put("寅丑", Arrays.asList("", "", "封诰", "火星", "文曲", "", "文昌_台辅", "地空", "", "", "铃星", "地劫"));
            put("寅亥", Arrays.asList("", "", "封诰", "", "文曲", "", "文昌_台辅", "地空", "", "火星", "铃星", "地劫"));
            put("寅卯", Arrays.asList("", "", "封诰", "", "文曲", "", "文昌_台辅", "地空", "", "火星", "铃星", "地劫"));
            put("寅未", Arrays.asList("", "", "封诰", "", "文曲", "", "文昌_台辅", "地空", "", "火星", "铃星", "地劫"));

            put("卯寅", Arrays.asList("地劫", "", "火星", "封诰", "铃星", "文昌_文曲", "地空", "台辅", "", "", "", ""));
            put("卯午", Arrays.asList("地劫", "", "火星", "封诰", "铃星", "文昌_文曲", "地空", "台辅", "", "", "", ""));
            put("卯戌", Arrays.asList("地劫", "", "火星", "封诰", "铃星", "文昌_文曲", "地空", "台辅", "", "", "", ""));
            put("卯申", Arrays.asList("地劫", "", "", "封诰_火星", "", "文昌_文曲", "地空", "台辅", "", "", "", "铃星"));
            put("卯子", Arrays.asList("地劫", "", "", "封诰_火星", "", "文昌_文曲", "地空", "台辅", "", "", "", "铃星"));
            put("卯辰", Arrays.asList("地劫", "", "", "封诰_火星", "", "文昌_文曲", "地空", "台辅", "", "", "", "铃星"));
            put("卯巳", Arrays.asList("地劫", "", "", "封诰", "火星", "文昌_文曲", "地空", "台辅", "", "", "", "铃星"));
            put("卯酉", Arrays.asList("地劫", "", "", "封诰", "火星", "文昌_文曲", "地空", "台辅", "", "", "", "铃星"));
            put("卯丑", Arrays.asList("地劫", "", "", "封诰", "火星", "文昌_文曲", "地空", "台辅", "", "", "", "铃星"));
            put("卯亥", Arrays.asList("地劫", "", "", "封诰", "", "文昌_文曲", "地空", "台辅", "", "", "火星", "铃星"));
            put("卯卯", Arrays.asList("地劫", "", "", "封诰", "", "文昌_文曲", "地空", "台辅", "", "", "火星", "铃星"));
            put("卯未", Arrays.asList("地劫", "", "", "封诰", "", "文昌_文曲", "地空", "台辅", "", "", "火星", "铃星"));

            put("辰寅", Arrays.asList("", "地劫", "", "火星", "文昌_封诰", "地空_铃星", "文曲", "", "台辅", "", "", ""));
            put("辰午", Arrays.asList("", "地劫", "", "火星", "文昌_封诰", "地空_铃星", "文曲", "", "台辅", "", "", ""));
            put("辰戌", Arrays.asList("", "地劫", "", "火星", "文昌_封诰", "地空_铃星", "文曲", "", "台辅", "", "", ""));
            put("辰申", Arrays.asList("铃星", "地劫", "", "", "文昌_封诰_火星", "地空", "文曲", "", "台辅", "", "", ""));
            put("辰子", Arrays.asList("铃星", "地劫", "", "", "文昌_封诰_火星", "地空", "文曲", "", "台辅", "", "", ""));
            put("辰辰", Arrays.asList("铃星", "地劫", "", "", "文昌_封诰_火星", "地空", "文曲", "", "台辅", "", "", ""));
            put("辰巳", Arrays.asList("铃星", "地劫", "", "", "文昌_封诰", "地空_火星", "文曲", "", "台辅", "", "", ""));
            put("辰酉", Arrays.asList("铃星", "地劫", "", "", "文昌_封诰", "地空_火星", "文曲", "", "台辅", "", "", ""));
            put("辰丑", Arrays.asList("铃星", "地劫", "", "", "文昌_封诰", "地空_火星", "文曲", "", "台辅", "", "", ""));
            put("辰亥", Arrays.asList("铃星", "地劫", "", "", "文昌_封诰", "地空", "文曲", "", "台辅", "", "", "火星"));
            put("辰卯", Arrays.asList("铃星", "地劫", "", "", "文昌_封诰", "地空", "文曲", "", "台辅", "", "", "火星"));
            put("辰未", Arrays.asList("铃星", "地劫", "", "", "文昌_封诰", "地空", "文曲", "", "台辅", "", "", "火星"));

            put("巳寅", Arrays.asList("", "", "地劫", "文昌", "地空_火星", "封诰", "铃星", "文曲", "", "台辅", "", ""));
            put("巳午", Arrays.asList("", "", "地劫", "文昌", "地空_火星", "封诰", "铃星", "文曲", "", "台辅", "", ""));
            put("巳戌", Arrays.asList("", "", "地劫", "文昌", "地空_火星", "封诰", "铃星", "文曲", "", "台辅", "", ""));
            put("巳申", Arrays.asList("", "铃星", "地劫", "文昌", "地空", "封诰_火星", "", "文曲", "", "台辅", "", ""));
            put("巳子", Arrays.asList("", "铃星", "地劫", "文昌", "地空", "封诰_火星", "", "文曲", "", "台辅", "", ""));
            put("巳辰", Arrays.asList("", "铃星", "地劫", "文昌", "地空", "封诰_火星", "", "文曲", "", "台辅", "", ""));
            put("巳巳", Arrays.asList("", "铃星", "地劫", "文昌", "地空", "封诰", "火星", "文曲", "", "台辅", "", ""));
            put("巳酉", Arrays.asList("", "铃星", "地劫", "文昌", "地空", "封诰", "火星", "文曲", "", "台辅", "", ""));
            put("巳丑", Arrays.asList("", "铃星", "地劫", "文昌", "地空", "封诰", "火星", "文曲", "", "台辅", "", ""));
            put("巳亥", Arrays.asList("火星", "铃星", "地劫", "文昌", "地空", "封诰", "", "文曲", "", "台辅", "", ""));
            put("巳卯", Arrays.asList("火星", "铃星", "地劫", "文昌", "地空", "封诰", "", "文曲", "", "台辅", "", ""));
            put("巳未", Arrays.asList("火星", "铃星", "地劫", "文昌", "地空", "封诰", "", "文曲", "", "台辅", "", ""));

            put("午寅", Arrays.asList("", "", "文昌", "地劫_地空", "", "火星", "封诰", "铃星", "文曲", "", "台辅", ""));
            put("午午", Arrays.asList("", "", "文昌", "地劫_地空", "", "火星", "封诰", "铃星", "文曲", "", "台辅", ""));
            put("午戌", Arrays.asList("", "", "文昌", "地劫_地空", "", "火星", "封诰", "铃星", "文曲", "", "台辅", ""));
            put("午申", Arrays.asList("", "", "文昌_铃星", "地劫_地空", "", "", "封诰_火星", "", "文曲", "", "台辅", ""));
            put("午子", Arrays.asList("", "", "文昌_铃星", "地劫_地空", "", "", "封诰_火星", "", "文曲", "", "台辅", ""));
            put("午辰", Arrays.asList("", "", "文昌_铃星", "地劫_地空", "", "", "封诰_火星", "", "文曲", "", "台辅", ""));
            put("午巳", Arrays.asList("", "", "文昌_铃星", "地劫_地空", "", "", "封诰", "火星", "文曲", "", "台辅", ""));
            put("午酉", Arrays.asList("", "", "文昌_铃星", "地劫_地空", "", "", "封诰", "火星", "文曲", "", "台辅", ""));
            put("午丑", Arrays.asList("", "", "文昌_铃星", "地劫_地空", "", "", "封诰", "火星", "文曲", "", "台辅", ""));
            put("午亥", Arrays.asList("", "火星", "文昌_铃星", "地劫_地空", "", "", "封诰", "", "文曲", "", "台辅", ""));
            put("午卯", Arrays.asList("", "火星", "文昌_铃星", "地劫_地空", "", "", "封诰", "", "文曲", "", "台辅", ""));
            put("午未", Arrays.asList("", "火星", "文昌_铃星", "地劫_地空", "", "", "封诰", "", "文曲", "", "台辅", ""));

            put("未寅", Arrays.asList("", "文昌", "地空", "", "地劫", "", "火星", "封诰", "铃星", "文曲", "", "台辅"));
            put("未午", Arrays.asList("", "文昌", "地空", "", "地劫", "", "火星", "封诰", "铃星", "文曲", "", "台辅"));
            put("未戌", Arrays.asList("", "文昌", "地空", "", "地劫", "", "火星", "封诰", "铃星", "文曲", "", "台辅"));
            put("未申", Arrays.asList("", "文昌", "地空", "铃星", "地劫", "", "", "封诰_火星", "", "文曲", "", "台辅"));
            put("未子", Arrays.asList("", "文昌", "地空", "铃星", "地劫", "", "", "封诰_火星", "", "文曲", "", "台辅"));
            put("未辰", Arrays.asList("", "文昌", "地空", "铃星", "地劫", "", "", "封诰_火星", "", "文曲", "", "台辅"));
            put("未巳", Arrays.asList("", "文昌", "地空", "铃星", "地劫", "", "", "封诰", "火星", "文曲", "", "台辅"));
            put("未酉", Arrays.asList("", "文昌", "地空", "铃星", "地劫", "", "", "封诰", "火星", "文曲", "", "台辅"));
            put("未丑", Arrays.asList("", "文昌", "地空", "铃星", "地劫", "", "", "封诰", "火星", "文曲", "", "台辅"));
            put("未亥", Arrays.asList("", "文昌", "地空_火星", "铃星", "地劫", "", "", "封诰", "", "文曲", "", "台辅"));
            put("未卯", Arrays.asList("", "文昌", "地空_火星", "铃星", "地劫", "", "", "封诰", "", "文曲", "", "台辅"));
            put("未未", Arrays.asList("", "文昌", "地空_火星", "铃星", "地劫", "", "", "封诰", "", "文曲", "", "台辅"));

            put("申寅", Arrays.asList("文昌_台辅", "地空", "", "", "", "地劫", "", "火星", "封诰", "铃星", "文曲", ""));
            put("申午", Arrays.asList("文昌_台辅", "地空", "", "", "", "地劫", "", "火星", "封诰", "铃星", "文曲", ""));
            put("申戌", Arrays.asList("文昌_台辅", "地空", "", "", "", "地劫", "", "火星", "封诰", "铃星", "文曲", ""));
            put("申申", Arrays.asList("文昌_台辅", "地空", "", "", "铃星", "地劫", "", "", "封诰_火星", "", "文曲", ""));
            put("申子", Arrays.asList("文昌_台辅", "地空", "", "", "铃星", "地劫", "", "", "封诰_火星", "", "文曲", ""));
            put("申辰", Arrays.asList("文昌_台辅", "地空", "", "", "铃星", "地劫", "", "", "封诰_火星", "", "文曲", ""));
            put("申巳", Arrays.asList("文昌_台辅", "地空", "", "", "铃星", "地劫", "", "", "封诰", "火星", "文曲", ""));
            put("申酉", Arrays.asList("文昌_台辅", "地空", "", "", "铃星", "地劫", "", "", "封诰", "火星", "文曲", ""));
            put("申丑", Arrays.asList("文昌_台辅", "地空", "", "", "铃星", "地劫", "", "", "封诰", "火星", "文曲", ""));
            put("申亥", Arrays.asList("文昌_台辅", "地空", "", "火星", "铃星", "地劫", "", "", "封诰", "", "文曲", ""));
            put("申卯", Arrays.asList("文昌_台辅", "地空", "", "火星", "铃星", "地劫", "", "", "封诰", "", "文曲", ""));
            put("申未", Arrays.asList("文昌_台辅", "地空", "", "火星", "铃星", "地劫", "", "", "封诰", "", "文曲", ""));

            put("酉寅", Arrays.asList("地空", "台辅", "", "", "", "", "地劫", "", "火星", "封诰", "铃星", "文昌_文曲"));
            put("酉午", Arrays.asList("地空", "台辅", "", "", "", "", "地劫", "", "火星", "封诰", "铃星", "文昌_文曲"));
            put("酉戌", Arrays.asList("地空", "台辅", "", "", "", "", "地劫", "", "火星", "封诰", "铃星", "文昌_文曲"));
            put("酉申", Arrays.asList("地空", "台辅", "", "", "", "铃星", "地劫", "", "", "封诰_火星", "", "文昌_文曲"));
            put("酉子", Arrays.asList("地空", "台辅", "", "", "", "铃星", "地劫", "", "", "封诰_火星", "", "文昌_文曲"));
            put("酉辰", Arrays.asList("地空", "台辅", "", "", "", "铃星", "地劫", "", "", "封诰_火星", "", "文昌_文曲"));
            put("酉巳", Arrays.asList("地空", "台辅", "", "", "", "铃星", "地劫", "", "", "封诰", "火星", "文昌_文曲"));
            put("酉酉", Arrays.asList("地空", "台辅", "", "", "", "铃星", "地劫", "", "", "封诰", "火星", "文昌_文曲"));
            put("酉丑", Arrays.asList("地空", "台辅", "", "", "", "铃星", "地劫", "", "", "封诰", "火星", "文昌_文曲"));
            put("酉亥", Arrays.asList("地空", "台辅", "", "", "火星", "铃星", "地劫", "", "", "封诰", "", "文昌_文曲"));
            put("酉卯", Arrays.asList("地空", "台辅", "", "", "火星", "铃星", "地劫", "", "", "封诰", "", "文昌_文曲"));
            put("酉未", Arrays.asList("地空", "台辅", "", "", "火星", "铃星", "地劫", "", "", "封诰", "", "文昌_文曲"));

            put("戌寅", Arrays.asList("文曲", "", "台辅", "", "", "", "", "地劫", "", "火星", "文昌_封诰", "地空_铃星"));
            put("戌午", Arrays.asList("文曲", "", "台辅", "", "", "", "", "地劫", "", "火星", "文昌_封诰", "地空_铃星"));
            put("戌戌", Arrays.asList("文曲", "", "台辅", "", "", "", "", "地劫", "", "火星", "文昌_封诰", "地空_铃星"));
            put("戌申", Arrays.asList("文曲", "", "台辅", "", "", "", "铃星", "地劫", "", "", "文昌_封诰_火星", "地空"));
            put("戌子", Arrays.asList("文曲", "", "台辅", "", "", "", "铃星", "地劫", "", "", "文昌_封诰_火星", "地空"));
            put("戌辰", Arrays.asList("文曲", "", "台辅", "", "", "", "铃星", "地劫", "", "", "文昌_封诰_火星", "地空"));
            put("戌巳", Arrays.asList("文曲", "", "台辅", "", "", "", "铃星", "地劫", "", "", "文昌_封诰", "地空_火星"));
            put("戌酉", Arrays.asList("文曲", "", "台辅", "", "", "", "铃星", "地劫", "", "", "文昌_封诰", "地空_火星"));
            put("戌丑", Arrays.asList("文曲", "", "台辅", "", "", "", "铃星", "地劫", "", "", "文昌_封诰", "地空_火星"));
            put("戌亥", Arrays.asList("文曲", "", "台辅", "", "", "火星", "铃星", "地劫", "", "", "文昌_封诰", "地空"));
            put("戌卯", Arrays.asList("文曲", "", "台辅", "", "", "火星", "铃星", "地劫", "", "", "文昌_封诰", "地空"));
            put("戌未", Arrays.asList("文曲", "", "台辅", "", "", "火星", "铃星", "地劫", "", "", "文昌_封诰", "地空"));

            put("亥寅", Arrays.asList("铃星", "文曲", "", "台辅", "", "", "", "", "地劫", "文昌", "地空_火星", "封诰"));
            put("亥午", Arrays.asList("铃星", "文曲", "", "台辅", "", "", "", "", "地劫", "文昌", "地空_火星", "封诰"));
            put("亥戌", Arrays.asList("铃星", "文曲", "", "台辅", "", "", "", "", "地劫", "文昌", "地空_火星", "封诰"));
            put("亥申", Arrays.asList("", "文曲", "", "台辅", "", "", "", "铃星", "地劫", "文昌", "地空", "封诰_火星"));
            put("亥子", Arrays.asList("", "文曲", "", "台辅", "", "", "", "铃星", "地劫", "文昌", "地空", "封诰_火星"));
            put("亥辰", Arrays.asList("", "文曲", "", "台辅", "", "", "", "铃星", "地劫", "文昌", "地空", "封诰_火星"));
            put("亥巳", Arrays.asList("火星", "文曲", "", "台辅", "", "", "", "铃星", "地劫", "文昌", "地空", "封诰"));
            put("亥酉", Arrays.asList("火星", "文曲", "", "台辅", "", "", "", "铃星", "地劫", "文昌", "地空", "封诰"));
            put("亥丑", Arrays.asList("火星", "文曲", "", "台辅", "", "", "", "铃星", "地劫", "文昌", "地空", "封诰"));
            put("亥亥", Arrays.asList("", "文曲", "", "台辅", "", "", "火星", "铃星", "地劫", "文昌", "地空", "封诰"));
            put("亥卯", Arrays.asList("", "文曲", "", "台辅", "", "", "火星", "铃星", "地劫", "文昌", "地空", "封诰"));
            put("亥未", Arrays.asList("", "文曲", "", "台辅", "", "", "火星", "铃星", "地劫", "文昌", "地空", "封诰"));

            put("子寅", Arrays.asList("封诰", "铃星", "文曲", "", "台辅", "", "", "", "文昌", "地劫_地空", "", "火星"));
            put("子午", Arrays.asList("封诰", "铃星", "文曲", "", "台辅", "", "", "", "文昌", "地劫_地空", "", "火星"));
            put("子戌", Arrays.asList("封诰", "铃星", "文曲", "", "台辅", "", "", "", "文昌", "地劫_地空", "", "火星"));
            put("子申", Arrays.asList("封诰_火星", "", "文曲", "", "台辅", "", "", "", "文昌_铃星", "地劫_地空", "", ""));
            put("子子", Arrays.asList("封诰_火星", "", "文曲", "", "台辅", "", "", "", "文昌_铃星", "地劫_地空", "", ""));
            put("子辰", Arrays.asList("封诰_火星", "", "文曲", "", "台辅", "", "", "", "文昌_铃星", "地劫_地空", "", ""));
            put("子巳", Arrays.asList("封诰", "火星", "文曲", "", "台辅", "", "", "", "文昌_铃星", "地劫_地空", "", ""));
            put("子酉", Arrays.asList("封诰", "火星", "文曲", "", "台辅", "", "", "", "文昌_铃星", "地劫_地空", "", ""));
            put("子丑", Arrays.asList("封诰", "火星", "文曲", "", "台辅", "", "", "", "文昌_铃星", "地劫_地空", "", ""));
            put("子亥", Arrays.asList("封诰", "", "文曲", "", "台辅", "", "", "火星", "文昌_铃星", "地劫_地空", "", ""));
            put("子卯", Arrays.asList("封诰", "", "文曲", "", "台辅", "", "", "火星", "文昌_铃星", "地劫_地空", "", ""));
            put("子未", Arrays.asList("封诰", "", "文曲", "", "台辅", "", "", "火星", "文昌_铃星", "地劫_地空", "", ""));

            put("丑寅", Arrays.asList("火星", "封诰", "铃星", "文曲", "", "台辅", "", "文昌", "地空", "", "地劫", ""));
            put("丑午", Arrays.asList("火星", "封诰", "铃星", "文曲", "", "台辅", "", "文昌", "地空", "", "地劫", ""));
            put("丑戌", Arrays.asList("火星", "封诰", "铃星", "文曲", "", "台辅", "", "文昌", "地空", "", "地劫", ""));
            put("丑申", Arrays.asList("", "封诰_火星", "", "文曲", "", "台辅", "", "文昌", "地空", "铃星", "地劫", ""));
            put("丑子", Arrays.asList("", "封诰_火星", "", "文曲", "", "台辅", "", "文昌", "地空", "铃星", "地劫", ""));
            put("丑辰", Arrays.asList("", "封诰_火星", "", "文曲", "", "台辅", "", "文昌", "地空", "铃星", "地劫", ""));
            put("丑巳", Arrays.asList("", "封诰", "火星", "文曲", "", "台辅", "", "文昌", "地空", "铃星", "地劫", ""));
            put("丑酉", Arrays.asList("", "封诰", "火星", "文曲", "", "台辅", "", "文昌", "地空", "铃星", "地劫", ""));
            put("丑丑", Arrays.asList("", "封诰", "火星", "文曲", "", "台辅", "", "文昌", "地空", "铃星", "地劫", ""));
            put("丑亥", Arrays.asList("", "封诰", "", "文曲", "", "台辅", "", "文昌", "地空_火星", "铃星", "地劫", ""));
            put("丑卯", Arrays.asList("", "封诰", "", "文曲", "", "台辅", "", "文昌", "地空_火星", "铃星", "地劫", ""));
            put("丑未", Arrays.asList("", "封诰", "", "文曲", "", "台辅", "", "文昌", "地空_火星", "铃星", "地劫", ""));
        }
    };

    /**
     * 月支诸星（月支为键）
     */
    public static final Map<String, List<String>> YUE_ZHI_ZHU_XING = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        /*
            月支诸星：左辅星、右弼星、天邢星、天姚星、天马星、解神星、天巫星、天月星、阴煞星
        */

        {
            // 例如：月支是寅，则：左辅星落辰3宫、右弼星落戌9宫、天邢星落酉8宫、天姚星落丑12宫、天马星落申7宫、解神星落申7宫、天巫星落巳4宫、天月星落戌9宫、阴煞星落寅1宫
            put("寅", Arrays.asList("阴煞", "", "左辅", "天巫", "", "", "天马_解神", "天邢", "右弼_天月", "", "", "天姚"));
            put("卯", Arrays.asList("天姚", "", "", "左辅_天马_天月", "", "", "解神_天巫", "右弼", "天邢", "", "阴煞", ""));
            put("辰", Arrays.asList("天马_天巫", "天姚", "天月", "", "左辅", "", "右弼", "", "解神_阴煞", "天邢", "", ""));
            put("巳", Arrays.asList("天月", "", "天姚", "", "", "左辅_右弼", "阴煞", "", "解神", "天马_天巫", "天邢", ""));
            put("午", Arrays.asList("", "", "", "天姚_天巫", "右弼_阴煞", "天月", "左辅_天马", "", "", "", "解神", "天邢"));
            put("未", Arrays.asList("天邢", "天月", "阴煞", "右弼_天马", "天姚", "", "天巫", "左辅", "", "", "解神", ""));
            put("申", Arrays.asList("天马_解神_天巫_阴煞", "天邢", "右弼", "", "", "天姚", "", "", "左辅", "天月", "", ""));
            put("酉", Arrays.asList("解神", "右弼", "天邢", "", "", "天月", "天姚", "", "", "左辅_天马_天巫", "阴煞", ""));
            put("戌", Arrays.asList("右弼_天月", "", "解神", "天邢_天巫", "", "", "天马", "天姚", "阴煞", "", "左辅", ""));
            put("亥", Arrays.asList("", "", "解神", "天马_天月", "天邢", "", "天巫_阴煞", "", "天姚", "", "", "左辅_右弼"));
            put("子", Arrays.asList("左辅_天马_天巫", "", "", "", "解神_阴煞", "天邢", "", "", "天月", "天姚", "右弼", ""));
            put("丑", Arrays.asList("天月", "左辅", "阴煞", "", "解神", "", "天邢", "", "", "右弼_天马_天巫", "天姚", ""));
        }
    };

    /**
     * 年干诸星（年干为键）
     */
    public static final Map<String, List<String>> NIAN_GAN_ZHU_XING = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        /*
            年干诸星：禄存星、擎羊星、陀罗星、天魁星、天钺星、天官星、天福星
        */

        {
            // 例如：年支是甲，则：禄存星落寅1宫、擎羊星落卯2宫、陀罗星落丑12宫、天魁星落丑12宫、天钺星落未6宫、天官星落未6宫、天福星落酉8宫
            put("甲", Arrays.asList("禄存", "擎羊", "", "", "", "天钺_天官", "", "天福", "", "", "", "陀罗_天魁"));
            put("乙", Arrays.asList("陀罗", "禄存", "擎羊_天官", "", "", "", "天钺_天福", "", "", "", "天魁", ""));
            put("丙", Arrays.asList("", "", "陀罗", "禄存_天官", "擎羊", "", "", "天钺", "", "天魁", "天福", ""));
            put("丁", Arrays.asList("天官", "", "", "陀罗", "禄存", "擎羊", "", "天钺", "", "天福", "天魁", ""));
            put("戊", Arrays.asList("", "天福", "陀罗", "禄存", "擎羊", "天钺_天官", "", "", "", "", "", "天魁"));
            put("己", Arrays.asList("天福", "", "", "陀罗", "禄存", "擎羊", "天钺", "天官", "", "", "天魁", ""));
            put("庚", Arrays.asList("", "", "", "", "天福", "陀罗_天钺", "禄存", "擎羊", "", "天官", "", "天魁"));
            put("辛", Arrays.asList("天钺", "", "", "天福", "天魁", "", "陀罗", "禄存_天官", "擎羊", "", "", ""));
            put("壬", Arrays.asList("", "天魁", "", "天钺", "天福", "", "", "", "陀罗_天官", "禄存", "擎羊", ""));
            put("癸", Arrays.asList("", "天魁", "", "天钺_天福", "天官", "", "", "", "", "陀罗", "禄存", "擎羊"));
        }
    };

    /**
     * 年支诸星（年支为键）
     */
    public static final Map<String, List<String>> NIAN_ZHI_ZHU_XING = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        /*
            年支诸星：天空星、天哭星、天虚星、龙池星、凤阁星、红鸾星、天喜星、蜚廉星、破碎星、孤辰星、寡宿星
        */

        {
            // 例如：年支是子，则：天空星落丑12宫、天哭星落午5宫、天虚星落午5宫、龙池星落辰3宫、凤阁星落戌9宫、红鸾星落卯2宫、天喜星落酉8宫、蜚廉星落申7宫、破碎星落巳4宫、孤辰星落寅1宫、寡宿星落戌9宫
            put("子", Arrays.asList("孤辰", "红鸾", "龙池", "破碎", "天哭_天虚", "", "蜚廉", "天喜", "凤阁_寡宿", "", "", "天空"));
            put("丑", Arrays.asList("天空_红鸾_孤辰", "", "", "天哭_龙池", "", "天虚", "天喜", "凤阁_蜚廉", "寡宿", "", "", "破碎"));
            put("寅", Arrays.asList("", "天空", "天哭", "孤辰", "龙池", "天喜", "天虚_凤阁", "破碎", "蜚廉", "", "", "红鸾_寡宿"));
            put("卯", Arrays.asList("", "天哭", "天空", "蜚廉_破碎_孤辰", "天喜", "龙池_凤阁", "", "天虚", "", "", "红鸾", "寡宿"));
            put("辰", Arrays.asList("天哭", "", "", "天空_天喜_孤辰", "凤阁_蜚廉", "", "龙池", "", "天虚", "红鸾", "", "破碎_寡宿"));
            put("巳", Arrays.asList("", "", "天喜_寡宿", "凤阁", "天空", "蜚廉", "孤辰", "龙池_破碎", "红鸾", "天虚", "", "天哭"));
            put("午", Arrays.asList("蜚廉", "天喜", "凤阁_寡宿", "破碎", "", "天空", "孤辰", "红鸾", "龙池", "", "天哭_天虚", ""));
            put("未", Arrays.asList("天喜", "凤阁_蜚廉", "寡宿", "", "", "", "天空_红鸾_孤辰", "", "", "天哭_龙池", "", "天虚_破碎"));
            put("申", Arrays.asList("天虚_凤阁", "", "蜚廉", "", "", "红鸾_寡宿", "", "天空_破碎", "天哭", "孤辰", "龙池", "天喜"));
            put("酉", Arrays.asList("", "天虚", "", "破碎", "红鸾", "寡宿", "", "天哭", "天空", "蜚廉_孤辰", "天喜", "龙池_凤阁"));
            put("戌", Arrays.asList("龙池", "", "天虚", "红鸾", "", "寡宿", "天哭", "", "", "天空_天喜_孤辰", "凤阁_蜚廉", "破碎"));
            put("亥", Arrays.asList("孤辰", "龙池", "红鸾", "天虚", "", "天哭", "", "破碎", "天喜_寡宿", "凤阁", "天空", "蜚廉"));
        }
    };

    /**
     * 年支诸星之天才星十二宫位名称（年支为键）
     */
    public static final Map<String, String> NIAN_ZHI_TIAN_CAI_XING_GONG_WEI = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            // 例如：年支是子，则：天才星落命宫
            put("子", "命宫");
            put("丑", "父母宫");
            put("寅", "福德宫");
            put("卯", "田宅宫");
            put("辰", "官禄宫");
            put("巳", "交友宫");
            put("午", "迁移宫");
            put("未", "疾厄宫");
            put("申", "财帛宫");
            put("酉", "子女宫");
            put("戌", "夫妻宫");
            put("亥", "兄弟宫");
        }
    };

    /**
     * 四化星宫位（年干为键）
     */
    public static final Map<String, List<String>> SI_HUA_GONG_WEI = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        /*
            四化星：化禄星、化权星、化科星、化忌星
        */

        {
            // 例如：年干是甲，则：化禄星落廉贞星、化权星落破军星、化科星落武曲星、化忌星落太阳星
            put("甲", Arrays.asList("廉贞", "破军", "武曲", "太阳"));
            put("乙", Arrays.asList("天机", "天梁", "紫微", "太阴"));
            put("丙", Arrays.asList("天同", "天机", "文昌", "廉贞"));
            put("丁", Arrays.asList("太阴", "天同", "天机", "巨门"));
            put("戊", Arrays.asList("贪狼", "太阴", "右弼", "天机"));
            put("己", Arrays.asList("武曲", "贪狼", "天梁", "文曲"));
            put("庚", Arrays.asList("太阳", "武曲", "天同", "太阴"));
            put("辛", Arrays.asList("巨门", "太阳", "文曲", "文昌"));
            put("壬", Arrays.asList("天梁", "紫微", "左辅", "武曲"));
            put("癸", Arrays.asList("破军", "巨门", "太阴", "贪狼"));
        }
    };

    /**
     * 十二长生（男女阴阳+五行局为键）
     */
    public static final Map<String, List<String>> SHI_ER_ZHANG_SHENG = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        {
            put("阳男水二局", Arrays.asList("病", "死", "墓", "绝", "胎", "养", "长生", "沐浴", "冠带", "临官", "帝旺", "衰")); // 阳男阴女
            put("阴男水二局", Arrays.asList("病", "衰", "帝旺", "临官", "冠带", "沐浴", "长生", "养", "胎", "绝", "墓", "死")); // 阴男阳女
            put("阳男木三局", Arrays.asList("临官", "帝旺", "衰", "病", "死", "墓", "绝", "胎", "养", "长生", "沐浴", "冠带")); // 阳男阴女
            put("阴男木三局", Arrays.asList("绝", "墓", "死", "病", "衰", "帝旺", "临官", "冠带", "沐浴", "长生", "养", "胎")); // 阴男阳女
            put("阳男金四局", Arrays.asList("绝", "胎", "养", "长生", "沐浴", "冠带", "临官", "帝旺", "衰", "病", "死", "墓")); // 阳男阴女
            put("阴男金四局", Arrays.asList("临官", "冠带", "沐浴", "长生", "养", "胎", "绝", "墓", "死", "病", "衰", "帝旺")); // 阴男阳女
            put("阳男土五局", Arrays.asList("病", "死", "墓", "绝", "胎", "养", "长生", "沐浴", "冠带", "临官", "帝旺", "衰")); // 阳男阴女
            put("阴男土五局", Arrays.asList("病", "衰", "帝旺", "临官", "冠带", "沐浴", "长生", "养", "胎", "绝", "墓", "死")); // 阴男阳女
            put("阳男火六局", Arrays.asList("长生", "沐浴", "冠带", "临官", "帝旺", "衰", "病", "死", "墓", "绝", "胎", "养")); // 阳男阴女
            put("阴男火六局", Arrays.asList("长生", "养", "胎", "绝", "墓", "死", "病", "衰", "帝旺", "临官", "冠带", "沐浴")); // 阴男阳女
        }
    };

    /**
     * 截路空亡（年干为键）
     */
    public static final Map<String, String> JIE_LU_KONG_WANG = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("甲", "申");
            put("乙", "午");
            put("丙", "辰");
            put("丁", "寅");
            put("戊", "子");
            put("己", "酉");
            put("庚", "未");
            put("辛", "巳");
            put("壬", "卯");
            put("癸", "丑");
        }
    };

    /**
     * 旬中空亡（年干支为键）
     */
    public static final Map<String, List<String>> XUN_ZHONG_KONG_WANG = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        {
            put("甲子", Arrays.asList("戌", "亥"));
            put("乙丑", Arrays.asList("戌", "亥"));
            put("丙寅", Arrays.asList("戌", "亥"));
            put("丁卯", Arrays.asList("戌", "亥"));
            put("戊辰", Arrays.asList("戌", "亥"));
            put("己巳", Arrays.asList("戌", "亥"));
            put("庚午", Arrays.asList("戌", "亥"));
            put("辛未", Arrays.asList("戌", "亥"));
            put("壬申", Arrays.asList("戌", "亥"));
            put("癸酉", Arrays.asList("戌", "亥"));
            put("甲戌", Arrays.asList("申", "酉"));
            put("乙亥", Arrays.asList("申", "酉"));
            put("丙子", Arrays.asList("申", "酉"));
            put("丁丑", Arrays.asList("申", "酉"));
            put("戊寅", Arrays.asList("申", "酉"));
            put("己卯", Arrays.asList("申", "酉"));
            put("庚辰", Arrays.asList("申", "酉"));
            put("辛巳", Arrays.asList("申", "酉"));
            put("壬午", Arrays.asList("申", "酉"));
            put("癸未", Arrays.asList("申", "酉"));
            put("甲申", Arrays.asList("午", "未"));
            put("乙酉", Arrays.asList("午", "未"));
            put("丙戌", Arrays.asList("午", "未"));
            put("丁亥", Arrays.asList("午", "未"));
            put("戊子", Arrays.asList("午", "未"));
            put("己丑", Arrays.asList("午", "未"));
            put("庚寅", Arrays.asList("午", "未"));
            put("辛卯", Arrays.asList("午", "未"));
            put("壬辰", Arrays.asList("午", "未"));
            put("癸巳", Arrays.asList("午", "未"));
            put("甲午", Arrays.asList("辰", "巳"));
            put("乙未", Arrays.asList("辰", "巳"));
            put("丙申", Arrays.asList("辰", "巳"));
            put("丁酉", Arrays.asList("辰", "巳"));
            put("戊戌", Arrays.asList("辰", "巳"));
            put("己亥", Arrays.asList("辰", "巳"));
            put("庚子", Arrays.asList("辰", "巳"));
            put("辛丑", Arrays.asList("辰", "巳"));
            put("壬寅", Arrays.asList("辰", "巳"));
            put("癸卯", Arrays.asList("辰", "巳"));
            put("甲辰", Arrays.asList("寅", "卯"));
            put("乙巳", Arrays.asList("寅", "卯"));
            put("丙午", Arrays.asList("寅", "卯"));
            put("丁未", Arrays.asList("寅", "卯"));
            put("戊申", Arrays.asList("寅", "卯"));
            put("己酉", Arrays.asList("寅", "卯"));
            put("庚戌", Arrays.asList("寅", "卯"));
            put("辛亥", Arrays.asList("寅", "卯"));
            put("壬子", Arrays.asList("寅", "卯"));
            put("癸丑", Arrays.asList("寅", "卯"));
            put("甲寅", Arrays.asList("子", "丑"));
            put("乙卯", Arrays.asList("子", "丑"));
            put("丙辰", Arrays.asList("子", "丑"));
            put("丁巳", Arrays.asList("子", "丑"));
            put("戊午", Arrays.asList("子", "丑"));
            put("己未", Arrays.asList("子", "丑"));
            put("庚申", Arrays.asList("子", "丑"));
            put("辛酉", Arrays.asList("子", "丑"));
            put("壬戌", Arrays.asList("子", "丑"));
            put("癸亥", Arrays.asList("子", "丑"));
        }
    };

    /**
     * 天伤星、天使星宫位（命宫地支为键）
     */
    public static final Map<String, List<String>> TIAN_SHANG_TIAN_SHI_XING_GONG_WEI = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        {
            // 例如：命宫地支是子，则：天伤星落巳4宫、天使星落未6宫
            put("子", Arrays.asList("巳", "未"));
            put("丑", Arrays.asList("午", "申"));
            put("寅", Arrays.asList("未", "酉"));
            put("卯", Arrays.asList("申", "戌"));
            put("辰", Arrays.asList("酉", "亥"));
            put("巳", Arrays.asList("戌", "子"));
            put("午", Arrays.asList("亥", "丑"));
            put("未", Arrays.asList("子", "寅"));
            put("申", Arrays.asList("丑", "卯"));
            put("酉", Arrays.asList("寅", "辰"));
            put("戌", Arrays.asList("卯", "巳"));
            put("亥", Arrays.asList("辰", "午"));
        }
    };

    /**
     * 大限（男女阴阳+五行局为键）
     */
    public static final Map<String, List<String>> DA_XIAN = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        // 从命宫开始，向后依次为：父母、福德、田宅、官禄、交友、迁移、疾厄、财帛、子女、夫妻、兄弟
        {
            put("阳男水二局", Arrays.asList("2-11", "12-21", "22-31", "32-41", "42-51", "52-61", "62-71", "72-81", "82-91", "92-101", "102-111", "112-121")); // 阳男阴女
            put("阴男水二局", Arrays.asList("2-11", "112-121", "102-111", "92-101", "82-91", "72-81", "62-71", "52-61", "42-51", "32-41", "22-31", "12-21")); // 阴男阳女
            put("阳男木三局", Arrays.asList("3-12", "13-22", "23-32", "33-42", "43-52", "53-62", "63-72", "73-82", "83-92", "93-102", "103-112", "113-122")); // 阳男阴女
            put("阴男木三局", Arrays.asList("3-12", "113-122", "103-112", "93-102", "83-92", "73-82", "63-72", "53-62", "43-52", "33-42", "23-32", "13-22")); // 阴男阳女
            put("阳男金四局", Arrays.asList("4-13", "14-23", "24-33", "34-43", "44-53", "54-63", "64-73", "74-83", "84-93", "94-103", "104-113", "114-123")); // 阳男阴女
            put("阴男金四局", Arrays.asList("4-13", "114-123", "104-113", "94-103", "84-93", "74-83", "64-73", "54-63", "44-53", "34-43", "24-33", "14-23")); // 阴男阳女
            put("阳男土五局", Arrays.asList("5-14", "15-24", "25-34", "35-44", "45-54", "55-64", "65-74", "75-84", "85-94", "95-104", "105-114", "115-124")); // 阳男阴女
            put("阴男土五局", Arrays.asList("5-14", "115-124", "105-114", "95-104", "85-94", "75-84", "65-74", "55-64", "45-54", "35-44", "25-34", "15-24")); // 阴男阳女
            put("阳男火六局", Arrays.asList("6-15", "16-25", "26-35", "36-45", "46-55", "56-65", "66-75", "76-85", "86-95", "96-105", "106-115", "116-125")); // 阳男阴女
            put("阴男火六局", Arrays.asList("6-15", "116-125", "106-115", "96-105", "86-95", "76-85", "66-75", "56-65", "46-55", "36-45", "26-35", "16-25")); // 阴男阳女
        }
    };

    /**
     * 小限（年支+性别为键）
     */
    public static final Map<String, List<String>> XIAO_XIAN = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        // 从寅宫开始，向后依次为：卯、辰、巳、午、未、申、酉、戌、亥、子、丑
        {
            put("寅男", Arrays.asList("11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61", "2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64", "5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67", "8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70"));
            put("午男", Arrays.asList("11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61", "2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64", "5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67", "8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70"));
            put("戌男", Arrays.asList("11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61", "2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64", "5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67", "8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70"));
            put("申男", Arrays.asList("5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67", "8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70", "11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61", "2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64"));
            put("子男", Arrays.asList("5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67", "8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70", "11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61", "2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64"));
            put("辰男", Arrays.asList("5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67", "8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70", "11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61", "2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64"));
            put("巳男", Arrays.asList("8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70", "11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61", "2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64", "5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67"));
            put("酉男", Arrays.asList("8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70", "11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61", "2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64", "5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67"));
            put("丑男", Arrays.asList("8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70", "11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61", "2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64", "5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67"));
            put("亥男", Arrays.asList("2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64", "5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67", "8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70", "11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61"));
            put("卯男", Arrays.asList("2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64", "5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67", "8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70", "11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61"));
            put("未男", Arrays.asList("2,14,26,38,50,62", "3,15,27,39,51,63", "4,16,28,40,52,64", "5,17,29,41,53,65", "6,18,30,42,54,66", "7,19,31,43,55,67", "8,20,32,44,56,68", "9,21,33,45,57,69", "10,22,34,46,58,70", "11,23,35,47,59,71", "12,24,36,48,60,72", "1,13,25,37,49,61"));
            put("寅女", Arrays.asList("3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61", "12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70", "9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67", "6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64"));
            put("午女", Arrays.asList("3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61", "12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70", "9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67", "6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64"));
            put("戌女", Arrays.asList("3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61", "12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70", "9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67", "6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64"));
            put("申女", Arrays.asList("9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67", "6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64", "3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61", "12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70"));
            put("子女", Arrays.asList("9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67", "6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64", "3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61", "12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70"));
            put("辰女", Arrays.asList("9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67", "6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64", "3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61", "12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70"));
            put("巳女", Arrays.asList("6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64", "3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61", "12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70", "9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67"));
            put("酉女", Arrays.asList("6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64", "3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61", "12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70", "9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67"));
            put("丑女", Arrays.asList("6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64", "3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61", "12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70", "9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67"));
            put("亥女", Arrays.asList("12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70", "9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67", "6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64", "3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61"));
            put("卯女", Arrays.asList("12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70", "9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67", "6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64", "3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61"));
            put("未女", Arrays.asList("12,24,36,48,60,72", "11,23,35,47,59,71", "10,22,34,46,58,70", "9,21,33,45,57,69", "8,20,32,44,56,68", "7,19,31,43,55,67", "6,18,30,42,54,66", "5,17,29,41,53,65", "4,16,28,40,52,64", "3,15,27,39,51,63", "2,14,26,38,50,62", "1,13,25,37,49,61"));
        }
    };

    /**
     * 十二宫博士
     */
    public static final String[] SHI_ER_GONG_BO_SHI_SHUN = {"博士", "力士", "青龙", "小耗", "将军", "奏书", "飞廉", "喜神", "病符", "大耗", "伏兵", "官府"};

    /**
     * 流年岁前诸星（流年支为键）
     */
    public static final Map<String, List<String>> LIU_NIAN_SUI_QIAN_ZHU_XING = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        // 从寅宫开始，向后依次为：卯、辰、巳、午、未、申、酉、戌、亥、子、丑
        {
            put("子", Arrays.asList("丧门", "贯索", "官符", "小耗", "岁破", "龙德", "白虎", "天德", "吊客", "病符", "岁建", "晦气"));
            put("丑", Arrays.asList("晦气", "丧门", "贯索", "官符", "小耗", "岁破", "龙德", "白虎", "天德", "吊客", "病符", "岁建"));
            put("寅", Arrays.asList("岁建", "晦气", "丧门", "贯索", "官符", "小耗", "岁破", "龙德", "白虎", "天德", "吊客", "病符"));
            put("卯", Arrays.asList("病符", "岁建", "晦气", "丧门", "贯索", "官符", "小耗", "岁破", "龙德", "白虎", "天德", "吊客"));
            put("辰", Arrays.asList("吊客", "病符", "岁建", "晦气", "丧门", "贯索", "官符", "小耗", "岁破", "龙德", "白虎", "天德"));
            put("巳", Arrays.asList("天德", "吊客", "病符", "岁建", "晦气", "丧门", "贯索", "官符", "小耗", "岁破", "龙德", "白虎"));
            put("午", Arrays.asList("白虎", "天德", "吊客", "病符", "岁建", "晦气", "丧门", "贯索", "官符", "小耗", "岁破", "龙德"));
            put("未", Arrays.asList("龙德", "白虎", "天德", "吊客", "病符", "岁建", "晦气", "丧门", "贯索", "官符", "小耗", "岁破"));
            put("申", Arrays.asList("岁破", "龙德", "白虎", "天德", "吊客", "病符", "岁建", "晦气", "丧门", "贯索", "官符", "小耗"));
            put("酉", Arrays.asList("小耗", "岁破", "龙德", "白虎", "天德", "吊客", "病符", "岁建", "晦气", "丧门", "贯索", "官符"));
            put("戌", Arrays.asList("官符", "小耗", "岁破", "龙德", "白虎", "天德", "吊客", "病符", "岁建", "晦气", "丧门", "贯索"));
            put("亥", Arrays.asList("贯索", "官符", "小耗", "岁破", "龙德", "白虎", "天德", "吊客", "病符", "岁建", "晦气", "丧门"));
        }
    };

    /**
     * 流年将前诸星（流年支为键）
     */
    public static final Map<String, List<String>> LIU_NIAN_JIANG_QIAN_ZHU_XING = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        // 从寅宫开始，向后依次为：卯、辰、巳、午、未、申、酉、戌、亥、子、丑
        {
            put("寅", Arrays.asList("指背", "咸池", "月煞", "亡神", "将星", "攀鞍", "岁驿", "息神", "华盖", "劫煞", "灾煞", "天煞"));
            put("午", Arrays.asList("指背", "咸池", "月煞", "亡神", "将星", "攀鞍", "岁驿", "息神", "华盖", "劫煞", "灾煞", "天煞"));
            put("戌", Arrays.asList("指背", "咸池", "月煞", "亡神", "将星", "攀鞍", "岁驿", "息神", "华盖", "劫煞", "灾煞", "天煞"));
            put("申", Arrays.asList("岁驿", "息神", "华盖", "劫煞", "灾煞", "天煞", "指背", "咸池", "月煞", "亡神", "将星", "攀鞍"));
            put("子", Arrays.asList("岁驿", "息神", "华盖", "劫煞", "灾煞", "天煞", "指背", "咸池", "月煞", "亡神", "将星", "攀鞍"));
            put("辰", Arrays.asList("岁驿", "息神", "华盖", "劫煞", "灾煞", "天煞", "指背", "咸池", "月煞", "亡神", "将星", "攀鞍"));
            put("巳", Arrays.asList("劫煞", "灾煞", "天煞", "指背", "咸池", "月煞", "亡神", "将星", "攀鞍", "岁驿", "息神", "华盖"));
            put("酉", Arrays.asList("劫煞", "灾煞", "天煞", "指背", "咸池", "月煞", "亡神", "将星", "攀鞍", "岁驿", "息神", "华盖"));
            put("丑", Arrays.asList("劫煞", "灾煞", "天煞", "指背", "咸池", "月煞", "亡神", "将星", "攀鞍", "岁驿", "息神", "华盖"));
            put("亥", Arrays.asList("亡神", "将星", "攀鞍", "岁驿", "息神", "华盖", "劫煞", "灾煞", "天煞", "指背", "咸池", "月煞"));
            put("卯", Arrays.asList("亡神", "将星", "攀鞍", "岁驿", "息神", "华盖", "劫煞", "灾煞", "天煞", "指背", "咸池", "月煞"));
            put("未", Arrays.asList("亡神", "将星", "攀鞍", "岁驿", "息神", "华盖", "劫煞", "灾煞", "天煞", "指背", "咸池", "月煞"));
        }
    };

    /**
     * 命主（命宫地支为键）
     */
    public static final Map<String, String> MING_ZHU = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("子", "贪狼");
            put("丑", "巨门");
            put("寅", "禄存");
            put("卯", "文曲");
            put("辰", "廉贞");
            put("巳", "武曲");
            put("午", "破军");
            put("未", "武曲");
            put("申", "廉贞");
            put("酉", "文曲");
            put("戌", "禄存");
            put("亥", "巨门");
        }
    };

    /**
     * 身主（年支为键）
     */
    public static final Map<String, String> SHEN_ZHU = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("子", "火星");
            put("丑", "天相");
            put("寅", "天梁");
            put("卯", "天同");
            put("辰", "文昌");
            put("巳", "天机");
            put("午", "火星");
            put("未", "天相");
            put("申", "天梁");
            put("酉", "天同");
            put("戌", "文昌");
            put("亥", "天机");
        }
    };

    /**
     * 子斗（月支+时支为键）
     */
    public static final Map<String, String> ZI_DOU = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("子子", "寅");
            put("子丑", "卯");
            put("子寅", "辰");
            put("子卯", "巳");
            put("子辰", "午");
            put("子巳", "未");
            put("子午", "申");
            put("子未", "酉");
            put("子申", "戌");
            put("子酉", "亥");
            put("子戌", "子");
            put("子亥", "丑");
            put("丑子", "丑");
            put("丑丑", "寅");
            put("丑寅", "卯");
            put("丑卯", "辰");
            put("丑辰", "巳");
            put("丑巳", "午");
            put("丑午", "未");
            put("丑未", "申");
            put("丑申", "酉");
            put("丑酉", "戌");
            put("丑戌", "亥");
            put("丑亥", "子");
            put("寅子", "子");
            put("寅丑", "丑");
            put("寅寅", "寅");
            put("寅卯", "卯");
            put("寅辰", "辰");
            put("寅巳", "巳");
            put("寅午", "午");
            put("寅未", "未");
            put("寅申", "申");
            put("寅酉", "酉");
            put("寅戌", "戌");
            put("寅亥", "亥");
            put("卯子", "亥");
            put("卯丑", "子");
            put("卯寅", "丑");
            put("卯卯", "寅");
            put("卯辰", "卯");
            put("卯巳", "辰");
            put("卯午", "巳");
            put("卯未", "午");
            put("卯申", "未");
            put("卯酉", "申");
            put("卯戌", "酉");
            put("卯亥", "戌");
            put("辰子", "戌");
            put("辰丑", "亥");
            put("辰寅", "子");
            put("辰卯", "丑");
            put("辰辰", "寅");
            put("辰巳", "卯");
            put("辰午", "辰");
            put("辰未", "巳");
            put("辰申", "午");
            put("辰酉", "未");
            put("辰戌", "申");
            put("辰亥", "酉");
            put("巳子", "酉");
            put("巳丑", "戌");
            put("巳寅", "亥");
            put("巳卯", "子");
            put("巳辰", "丑");
            put("巳巳", "寅");
            put("巳午", "卯");
            put("巳未", "辰");
            put("巳申", "巳");
            put("巳酉", "午");
            put("巳戌", "未");
            put("巳亥", "申");
            put("午子", "申");
            put("午丑", "酉");
            put("午寅", "戌");
            put("午卯", "亥");
            put("午辰", "子");
            put("午巳", "丑");
            put("午午", "寅");
            put("午未", "卯");
            put("午申", "辰");
            put("午酉", "巳");
            put("午戌", "午");
            put("午亥", "未");
            put("未子", "未");
            put("未丑", "申");
            put("未寅", "酉");
            put("未卯", "戌");
            put("未辰", "亥");
            put("未巳", "子");
            put("未午", "丑");
            put("未未", "寅");
            put("未申", "卯");
            put("未酉", "辰");
            put("未戌", "巳");
            put("未亥", "午");
            put("申子", "午");
            put("申丑", "未");
            put("申寅", "申");
            put("申卯", "酉");
            put("申辰", "戌");
            put("申巳", "亥");
            put("申午", "子");
            put("申未", "丑");
            put("申申", "寅");
            put("申酉", "卯");
            put("申戌", "辰");
            put("申亥", "巳");
            put("酉子", "巳");
            put("酉丑", "午");
            put("酉寅", "未");
            put("酉卯", "申");
            put("酉辰", "酉");
            put("酉巳", "戌");
            put("酉午", "亥");
            put("酉未", "子");
            put("酉申", "丑");
            put("酉酉", "寅");
            put("酉戌", "卯");
            put("酉亥", "辰");
            put("戌子", "辰");
            put("戌丑", "巳");
            put("戌寅", "午");
            put("戌卯", "未");
            put("戌辰", "申");
            put("戌巳", "酉");
            put("戌午", "戌");
            put("戌未", "亥");
            put("戌申", "子");
            put("戌酉", "丑");
            put("戌戌", "寅");
            put("戌亥", "卯");
            put("亥子", "卯");
            put("亥丑", "辰");
            put("亥寅", "巳");
            put("亥卯", "午");
            put("亥辰", "未");
            put("亥巳", "申");
            put("亥午", "酉");
            put("亥未", "戌");
            put("亥申", "亥");
            put("亥酉", "子");
            put("亥戌", "丑");
            put("亥亥", "寅");
        }
    };

    /**
     * 诸星庙旺平陷关系（诸星为键）
     */
    public static final Map<String, List<String>> ZHU_XING_GUAN_XI = new HashMap<String, List<String>>() {
        private static final long serialVersionUID = -1;

        // 诸星落入的宫位依次为：寅、卯、辰、巳、午、未、申、酉、戌、亥、子、丑
        {
            // 例如：紫微星落寅宫为庙、落卯宫为旺 ...
            put("紫微", Arrays.asList("庙", "旺", "陷", "旺", "庙", "庙", "旺", "平", "陷", "旺", "陷", "庙"));
            put("天机", Arrays.asList("旺", "旺", "旺", "平", "庙", "陷", "旺", "旺", "旺", "平", "庙", "陷"));
            put("太阳", Arrays.asList("旺", "庙", "旺", "旺", "庙", "旺", "平", "平", "陷", "陷", "陷", "陷"));
            put("武曲", Arrays.asList("平", "陷", "庙", "平", "旺", "庙", "平", "旺", "庙", "平", "旺", "庙"));
            put("天同", Arrays.asList("平", "庙", "旺", "庙", "陷", "陷", "旺", "平", "平", "庙", "旺", "陷"));
            put("廉贞", Arrays.asList("庙", "陷", "旺", "陷", "平", "庙", "庙", "平", "旺", "陷", "平", "旺"));
            put("天府", Arrays.asList("庙", "平", "庙", "旺", "旺", "庙", "旺", "平", "庙", "旺", "旺", "庙"));
            put("太阴", Arrays.asList("陷", "陷", "陷", "陷", "陷", "陷", "旺", "旺", "庙", "庙", "庙", "庙"));
            put("贪狼", Arrays.asList("平", "旺", "庙", "陷", "旺", "庙", "平", "旺", "庙", "陷", "旺", "庙"));
            put("巨门", Arrays.asList("庙", "旺", "陷", "庙", "旺", "陷", "庙", "旺", "陷", "庙", "旺", "陷"));
            put("天相", Arrays.asList("庙", "陷", "旺", "平", "旺", "平", "庙", "陷", "陷", "平", "庙", "庙"));
            put("天梁", Arrays.asList("庙", "庙", "旺", "陷", "庙", "旺", "陷", "平", "旺", "陷", "庙", "旺"));
            put("七杀", Arrays.asList("庙", "陷", "庙", "平", "旺", "旺", "庙", "平", "庙", "平", "旺", "旺"));
            put("破军", Arrays.asList("陷", "旺", "旺", "平", "庙", "庙", "陷", "陷", "旺", "平", "庙", "庙"));
            put("文昌", Arrays.asList("陷", "平", "旺", "庙", "陷", "平", "旺", "庙", "陷", "平", "旺", "庙"));
            put("文曲", Arrays.asList("陷", "平", "旺", "庙", "平", "旺", "旺", "庙", "陷", "平", "庙", "旺"));
            put("火星", Arrays.asList("庙", "旺", "陷", "平", "庙", "旺", "陷", "平", "庙", "旺", "陷", "平"));
            put("铃星", Arrays.asList("庙", "旺", "陷", "平", "庙", "旺", "陷", "平", "庙", "旺", "陷", "平"));
            put("地劫", Arrays.asList("平", "平", "陷", "陷", "庙", "平", "庙", "平", "平", "旺", "陷", "陷"));
            put("地空", Arrays.asList("陷", "平", "陷", "庙", "庙", "平", "庙", "庙", "陷", "陷", "平", "陷"));
            put("台辅", Arrays.asList("~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~"));
            put("封诰", Arrays.asList("~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~"));
            put("左辅", Arrays.asList("旺", "庙", "庙", "旺", "旺", "庙", "旺", "旺", "庙", "旺", "旺", "庙"));
            put("右弼", Arrays.asList("旺", "庙", "庙", "旺", "旺", "庙", "旺", "旺", "庙", "旺", "旺", "庙"));
            put("天邢", Arrays.asList("~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~"));
            put("天姚", Arrays.asList("~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~"));
            put("天马", Arrays.asList("旺", "~", "~", "平", "~", "~", "旺", "~", "~", "平", "~", "~"));
            put("解神", Arrays.asList("庙", "庙", "庙", "旺", "庙", "平", "陷", "旺", "庙", "陷", "庙", "平"));
            put("天巫", Arrays.asList("~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~"));
            put("天月", Arrays.asList("~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~"));
            put("阴煞", Arrays.asList("~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~"));
            put("禄存", Arrays.asList("庙", "旺", "~", "庙", "旺", "~", "庙", "旺", "~", "庙", "旺", "~"));
            put("擎羊", Arrays.asList("~", "陷", "庙", "~", "陷", "庙", "~", "陷", "庙", "~", "陷", "庙"));
            put("陀罗", Arrays.asList("陷", "~", "庙", "陷", "~", "庙", "陷", "~", "庙", "陷", "~", "庙"));
            put("天魁", Arrays.asList("庙", "庙", "庙", "庙", "庙", "旺", "庙", "庙", "庙", "庙", "庙", "旺"));
            put("天钺", Arrays.asList("庙", "庙", "庙", "庙", "庙", "旺", "庙", "庙", "庙", "庙", "庙", "旺"));
            put("天官", Arrays.asList("平", "旺", "旺", "旺", "庙", "庙", "~", "平", "平", "旺", "~", "~"));
            put("天福", Arrays.asList("旺", "平", "~", "旺", "平", "~", "庙", "庙", "~", "庙", "平", "~"));
            put("天空", Arrays.asList("陷", "平", "庙", "庙", "庙", "陷", "旺", "旺", "陷", "平", "陷", "平"));
            put("天哭", Arrays.asList("平", "庙", "平", "地", "陷", "平", "庙", "陷", "平", "平", "平", "庙"));
            put("天虚", Arrays.asList("旺", "庙", "陷", "旺", "平", "陷", "庙", "旺", "陷", "平", "陷", "庙"));
            put("龙池", Arrays.asList("平", "庙", "庙", "陷", "陷", "庙", "平", "庙", "陷", "旺", "旺", "平"));
            put("凤阁", Arrays.asList("庙", "旺", "陷", "庙", "平", "陷", "陷", "庙", "庙", "旺", "庙", "平"));
            put("红鸾", Arrays.asList("~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~"));
            put("天喜", Arrays.asList("庙", "旺", "陷", "庙", "庙", "陷", "旺", "庙", "陷", "旺", "旺", "陷"));
            put("蜚廉", Arrays.asList("~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~", "~"));
            put("破碎", Arrays.asList("~", "~", "~", "陷", "~", "~", "~", "平", "~", "~", "~", "陷"));
            put("孤辰", Arrays.asList("平", "~", "~", "陷", "~", "~", "平", "~", "~", "陷", "~", "~"));
            put("寡宿", Arrays.asList("~", "~", "陷", "~", "~", "陷", "~", "~", "陷", "~", "~", "平"));
            put("大耗", Arrays.asList("陷", "陷", "平", "陷", "旺", "平", "陷", "陷", "平", "陷", "旺", "平"));
            put("天德", Arrays.asList("平", "平", "庙", "旺", "旺", "庙", "平", "陷", "庙", "平", "庙", "庙"));
            put("天寿", Arrays.asList("旺", "陷", "庙", "平", "平", "旺", "旺", "平", "庙", "旺", "平", "庙"));
            put("天才", Arrays.asList("庙", "旺", "陷", "庙", "旺", "平", "庙", "旺", "陷", "庙", "旺", "平"));
            put("天使", Arrays.asList("平", "平", "陷", "平", "平", "平", "平", "陷", "陷", "旺", "陷", "陷"));
            put("天伤", Arrays.asList("平", "陷", "平", "平", "陷", "陷", "平", "平", "平", "旺", "陷", "平"));
            put("天贵", Arrays.asList("平", "旺", "旺", "平", "庙", "旺", "陷", "庙", "旺", "平", "庙", "旺"));
            put("恩光", Arrays.asList("平", "庙", "庙", "平", "庙", "旺", "平", "陷", "庙", "陷", "平", "庙"));
            put("八座", Arrays.asList("庙", "平", "旺", "庙", "旺", "平", "庙", "庙", "平", "庙", "陷", "庙"));
            put("三台", Arrays.asList("平", "陷", "庙", "平", "旺", "庙", "平", "庙", "旺", "平", "平", "庙"));
            put("旬空", Arrays.asList("陷", "平", "陷", "庙", "庙", "陷", "庙", "庙", "陷", "平", "陷", "平"));
            put("副旬", Arrays.asList("陷", "平", "陷", "庙", "庙", "陷", "庙", "庙", "陷", "平", "陷", "平"));
            put("截空", Arrays.asList("陷", "平", "陷", "庙", "庙", "庙", "庙", "庙", "~", "~", "陷", "陷"));
            put("咸池", Arrays.asList("~", "平", "~", "~", "陷", "~", "~", "平", "~", "~", "陷", "~"));
            put("劫煞", Arrays.asList("平", "~", "~", "陷", "~", "~", "平", "~", "~", "陷", "~", "~"));
            put("华盖", Arrays.asList("~", "~", "庙", "~", "~", "陷", "~", "~", "平", "~", "~", "陷"));
            put("截路", Arrays.asList("~", "~", "庙", "~", "~", "陷", "~", "~", "平", "~", "~", "陷"));
            put("禄", Arrays.asList("平", "陷", "庙", "地", "平", "庙", "庙", "平", "庙", "庙", "平", "庙")); // 化禄
            put("权", Arrays.asList("旺", "旺", "平", "平", "庙", "旺", "旺", "平", "庙", "旺", "陷", "庙")); // 化权
            put("科", Arrays.asList("旺", "庙", "庙", "陷", "庙", "旺", "庙", "平", "旺", "旺", "旺", "旺")); // 化科
            put("忌", Arrays.asList("陷", "旺", "陷", "陷", "陷", "旺", "陷", "陷", "陷", "陷", "旺", "庙")); // 化忌
        }
    };

    /**
     * 四化星入十二宫略解（四化星+十二宫为键）
     */
    public static final Map<String, String> SI_HUA_XING_SHI_ER_GONG = new HashMap<String, String>() {
        private static final long serialVersionUID = -1;

        {
            put("禄命宫", "财源广进，情感丰富。");
            put("禄兄弟", "手足情深，兄弟助力。");
            put("禄夫妻", "夫妻感情深厚，配偶带来财富。");
            put("禄子女", "子女聪明，能力强，带财。");
            put("禄财帛", "善于理财，财源滚滚。");
            put("禄疾厄", "小病不断，但身体结实。");
            put("禄迁移", "异地机遇多，适合外地发展。");
            put("禄交友", "朋友缘深，贵人相助，下属助力。");
            put("禄官禄", "事业有成，工作能力强。");
            put("禄田宅", "有祖产，顾家。");
            put("禄福德", "多财源，享受福气。");
            put("禄父母", "父母庇佑，家境优越。");

            put("权命宫", "主见强，固执，好强。");
            put("权兄弟", "兄弟强势。");
            put("权夫妻", "配偶强势，旺夫旺妻。");
            put("权子女", "子女好强，固执。");
            put("权财帛", "善于理财，支配财产。");
            put("权疾厄", "身体结实，少病。");
            put("权迁移", "在外有权，喜爱掌权。");
            put("权交友", "朋友有权，下属强势。");
            put("权官禄", "工作狂，能力强。");
            put("权田宅", "掌握房产，家中老大。");
            put("权福德", "霸道，掌权，好面子。");
            put("权父母", "父母强势，有矛盾。");

            put("科命宫", "名声在外，聪明，学历高。");
            put("科兄弟", "兄弟有名声，助力多。");
            put("科夫妻", "配偶助力大，贵人相助。");
            put("科子女", "子女关系融洽，聪明，学历高。");
            put("科财帛", "擅长理财，正财多。");
            put("科疾厄", "遇到好医生，生病遇贵人。");
            put("科迁移", "文凭好，适合外出发展。");
            put("科交友", "朋友、下属助力多。");
            put("科官禄", "工作平顺，出名，适合教学。");
            put("科田宅", "风水好，家人和睦。");
            put("科福德", "计划性强，高雅兴趣。");
            put("科父母", "父母贵人，长辈缘佳。");

            put("忌命宫", "不听劝，易焦虑，年少顺利。");
            put("忌兄弟", "为兄弟付出，兄弟无助力。");
            put("忌夫妻", "感情、婚姻不顺。");
            put("忌子女", "子女缘薄，操心子女。");
            put("忌财帛", "破财，财不聚，操心钱财。");
            put("忌疾厄", "体弱多病，免疫力差。");
            put("忌迁移", "外出不顺，需注意。");
            put("忌交友", "为朋友、下属付出，无助力。");
            put("忌官禄", "工作多变动，不顺利，助力少。");
            put("忌田宅", "不宜守财，容易搬家。");
            put("忌福德", "心高气傲，劳心劳力，不安。");
            put("忌父母", "父母缘薄，有代沟，助力少。");
        }
    };


}
